#include <driver/gpio.h>
#include <esp_log.h>
#include <esp_sleep.h>

#include "audio_codec.h"
#include "board.h"
#include "iot/thing.h"

#define TAG "Sleep"

namespace iot {

// 这里仅定义 Sleep 的属性和方法，不包含具体的实现
class Sleep : public Thing {
   private:
    bool sleepEnable_ = false;

   public:
    Sleep() : Thing("Sleep", "进入睡眠模式"), sleepEnable_(false) {
        // 定义设备的属性
        properties_.AddBooleanProperty("sleepEnable", "是否进入睡眠模式", [this]() -> bool { return sleepEnable_; });

        // 定义设备可以被远程执行的指令
        methods_.AddMethod("SleepEnable", "进入睡眠模式", ParameterList({Parameter("sleepEnable", "true or false", kValueTypeBoolean, true)}),
                           [this](const ParameterList& parameters) {
                               if (parameters["sleepEnable"].boolean()) {
                                   esp_deep_sleep_start();
                               }
                           });
    }
};

}  // namespace iot

DECLARE_THING(Sleep);
